namespace Brjnk.GpxExplorer.Workspace
{
    using System.ComponentModel;
    using System.Configuration;
    using System.Windows.Media;
    using Brjnk.GpxExplorer.Data.ImportExport;

    /// <summary>
    /// </summary>
    [SettingsSerializeAs(SettingsSerializeAs.Xml)]
    public abstract class ExternalApplication : INotifyPropertyChanged
    {
        public abstract bool IsAvailable { get; }

        public abstract bool Warning { get; }

        public abstract string Name { get; }

        public abstract ImageSource Icon { get; }

        public abstract string Path { get; }

        public abstract IDataWriter Writer { get; }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}